//package com.itheima.health.service.impl;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.github.pagehelper.Page;
//import com.github.pagehelper.PageHelper;
//import com.itheima.health.dao.OrderSettingMapper;
//import com.itheima.health.dao.TSaveItemgroupMapper;
//import com.itheima.health.entity.PageResult;
//import com.itheima.health.entity.QueryPageBean;
//import com.itheima.health.exception.BusinessException;
//import com.itheima.health.pojo.CheckItem;
//import com.itheima.health.pojo.OrderSetting;
//import com.itheima.health.pojo.Setmeal;
//import com.itheima.health.pojo.TSaveItemgroup;
//import com.itheima.health.service.TSaveItemgroupService;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.dubbo.config.annotation.DubboService;
//import org.springframework.beans.factory.annotation.Autowired;
//
//import java.util.*;
//
///**
// * (TSaveItemgroup)表服务实现类
// *
// * @author makejava
// * @since 2021-04-21 11:21:41
// */
//@DubboService
//@Slf4j
//public class TSaveItemgroupServiceImpl implements TSaveItemgroupService {
//    @Autowired
//    private TSaveItemgroupMapper tSaveItemgroupDao;
//    @Autowired
//    private OrderSettingMapper orderSettingMapper;
//    /**
//     * 通过ID查询单条数据
//     *
//     * @param id 主键
//     * @return 实例对象
//     */
//    @Override
//    public TSaveItemgroup queryById(Integer id) {
//        return tSaveItemgroupDao.queryById(id);
//    }
//
//    @Override
//    public Map<String,Object> findById(Integer id){
//    return tSaveItemgroupDao.findById(id);
//    }
//    /**
//     * 查询多条数据
//     *
//     * @param offset 查询起始位置
//     * @param limit  查询条数
//     * @return 对象列表
//     */
//    @Override
//    public List<TSaveItemgroup> queryAllByLimit(int offset, int limit) {
//        return this.tSaveItemgroupDao.queryAllByLimit(offset, limit);
//    }
//
//    /**
//     * 新增数据
//     *
//     * @param tSaveItemgroup 实例对象
//     * @return 实例对象
//     */
//    @Override
//    public TSaveItemgroup insert(TSaveItemgroup tSaveItemgroup) {
//        this.tSaveItemgroupDao.insert(tSaveItemgroup);
//        return tSaveItemgroup;
//    }
//
//    /**
//     * 修改数据
//     *
//     * @param tSaveItemgroup 实例对象
//     * @return 实例对象
//     */
//    @Override
//    public TSaveItemgroup update(TSaveItemgroup tSaveItemgroup) {
//        this.tSaveItemgroupDao.update(tSaveItemgroup);
//        return this.queryById(tSaveItemgroup.getId());
//    }
//
//    /**
//     * 通过主键删除数据
//     *
//     * @param id 主键
//     * @return 是否成功
//     */
//    @Override
//    public boolean deleteById(Integer id) {
//        return this.tSaveItemgroupDao.deleteById(id) > 0;
//    }
//
//    @Override
//    public PageResult findpage(QueryPageBean queryPageBean) {
//        PageHelper.startPage(queryPageBean.getCurrentPage(), queryPageBean.getPageSize());
//        Page<TSaveItemgroup> page = tSaveItemgroupDao.selectByCondition(queryPageBean.getQueryString());
//        return new PageResult(page.getTotal(),page.getResult());
//    }
//
//    @Override
//    public TSaveItemgroup add(TSaveItemgroup itemgroup) {
//        log.info("测试itemgroup:{}",itemgroup);
//        //1.查询当天是否可以预约--->当天是否有预约信息
//        OrderSetting orderSetting = orderSettingMapper.selectByDate(itemgroup.getOrderdate());
//        if (orderSetting == null) {
//            throw new BusinessException("当天不可预约！");
//        }
////      可预约人数<=已预约人数
//        if (orderSetting.getNumber()<=orderSetting.getReservations()){
//            throw new BusinessException("当天预约人数已满，请选择其它日期！");
//        }
//
//        TSaveItemgroup tSaveItemgroup=new TSaveItemgroup();
////        查询该用户再当天是否已经预约过改套餐体检信息
//        tSaveItemgroup.setMemberId(itemgroup.getMemberId());
//        tSaveItemgroup.setOrderdate(itemgroup.getOrderdate());
//        tSaveItemgroup.setSetmealJson(itemgroup.getSetmealJson());
//        int count=tSaveItemgroupDao.selectCount(tSaveItemgroup);
//        if (count>0){
//            throw new BusinessException("当天已经预约过该体检套餐，省点钱吧！");
//        }
////       对套餐及个别项目去重实现
//        Setmeal setmeal=(String) itemgroup.getSetmealJson(), Setmeal.class;
//        JSONArray itemJson = itemgroup.getItemJson();
//        List<CheckItem> checkItem = JSONObject.parseArray(itemJson.toJSONString(), CheckItem.class);
////      查询套餐里有哪些项
//        List<CheckItem> checkItemL=tSaveItemgroupDao.queryItemBySetmeal(setmeal.getId());
//
//        for (int i = 0; i < checkItemL.size(); i++) {
//            CheckItem checkItem1 = checkItemL.get(i);
//            if (checkItem.contains(checkItem1)){
//                throw new BusinessException("您选择的套餐和项重复,请核查");
//            }
//        }
//
//        //通过后新增订单数据
//        int i = tSaveItemgroupDao.insert(itemgroup);
//        log.info("插入后i：{}",i);
//        //4.维护t_ordersetting表---》已预约人数+1
//        orderSetting.setReservations(orderSetting.getReservations()+1);
//        orderSettingMapper.updateByPrimaryKeySelective(orderSetting);
//        return itemgroup;
//    }
//}
